package bus;

import java.util.LinkedList;
import java.util.List;
import java.util.Observable;
import java.util.Observer;

import mensaje.Mensaje;

import sistema.Sistema;

public class Bus extends Observable{
	
	List<Sistema> escuchando=new LinkedList<Sistema>();
	List<Mensaje> mensajes=new LinkedList<Mensaje>();
	
	private static Bus instance = new Bus();
	
	public static Bus getInstance(){
		return instance;
		
	}
	
	@Override
	public synchronized void addObserver(Observer o) {
		
		this.escuchando.add((Sistema) o);
	}
	
	public void llegoMensaje(Mensaje msj){
		
		mensajes.add(msj);
		this.notificar(msj);
	}

	private void notificar(Mensaje msj) {
		
		for(Sistema s : this.escuchando){
			s.update(this, msj);
			
		}
		
	}
	
	public static void main(String[] args) {
		
		Sistema sistema1 = new Sistema("Facebook");
		Sistema sistema2 = new Sistema("Twitter");
		
		sistema1.start();
		sistema2.start();
		
		
	}
	
	
}
